home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / source / gfxfx / copper.pas < prev    next >
Pascal/Delphi Source File  |  1994-04-20  |  1KB  |  75 lines

  1.  
  2. {$g+}
  3. program copper;
  4. { So-called 'copper-bars', by Bas van Gaalen, Holland, PD }
  5. uses crt;
  6. const
  7.  pal : array [0..3*28-1] of byte =
  8.    (2,4,4,4,8,8,6,12,12,8,16,16,10,20,20,12,24,24,14,28,28,16,32,32,
  9.     18,36,36,20,40,40,22,44,44,24,48,48,26,52,52,26,52,52,28,56,56,
  10.     28,56,56,30,60,60,30,60,60,30,60,60,33,63,63,33,63,63,33,63,63,
  11.     33,63,63,33,63,63,30,60,60,28,56,56,26,52,52,24,48,48);
  12.  
  13. procedure copperbars(var colors; lines : word); assembler;
  14. var i : byte;
  15. asm
  16.   cli
  17.   cld
  18.   push ds
  19.   mov ah,0
  20.   mov dh,3
  21.  
  22.   mov dl,0dah        { vertical retrace }
  23.  @vert1:
  24.   in al,dx
  25.   test al,8
  26.   jnz @vert1
  27.  @vert2:
  28.   in al,dx
  29.   test al,8
  30.   jz @vert2
  31.  
  32.   mov bh,1
  33.   mov di,[lines]
  34.  
  35.  @l1:
  36.   mov bl,bh
  37.   inc bh
  38.   lds si,[colors]
  39.  
  40.  @l2:
  41.   mov dl,0c8h
  42.   mov al,ah
  43.   out dx,al
  44.   inc dx
  45.   outsb
  46.   outsb
  47.  
  48.   mov dl,0dah        { horizontal retrace }
  49.  @hor1:
  50.   in al,dx
  51.   test al,1
  52.   jnz @hor1
  53.  @hor2:
  54.   in al,dx
  55.   test al,1
  56.   jz @hor2
  57.  
  58.   mov dl,0c9h
  59.   outsb
  60.  
  61.   dec  di
  62.   jz   @out
  63.   dec  bl
  64.   jnz  @l2
  65.   jmp  @l1
  66.  @out:
  67.  
  68.   pop ds
  69.   sti
  70. end;
  71.  
  72. begin
  73.   repeat copperbars(pal,278); until keypressed;
  74. end.
  75.